package com.bdqn.zhang.pojo;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.annotations.*;
import org.hibernate.annotations.CascadeType;

import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.HashSet;
import java.util.Set;

/**
 * <Description> <br>
 *
 * @author tao<br>
 * @version 1.0<br>
 * @taskId: <br>
 * @createDate 2019/10/17 17:49 <br>
 * @see com.bdqn.zhang.pojo <br>
 */
@Entity //实体
@Table(name="roletb") //表名
@Data
public class Role {
    @Id //主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //自动增长列 //设置主键生成策略
    private Long roleId;//角色唯一标识roleId
    private String rolePost;//角色的职位
    private int rolePay; //角色的薪资
    @JsonIgnore
    @ManyToMany(fetch = FetchType.EAGER) //多对多关系
    @Cascade(value = {CascadeType.SAVE_UPDATE}) //级联关系
    @JoinTable(name = "user_role_tb", //指定第三张中间表名称
            joinColumns = {@JoinColumn(name = "user_role_tb_role_id")}, //本表主键roleId与第三张中间表user_role_tb的外键user_role_tb_role_id对应.本表与中间表的外键对应关系
            inverseJoinColumns={@JoinColumn(name = "user_role_tb_user_id")}) //另一张表与中间表的外键的对应关系
    @NotFound(action = NotFoundAction.IGNORE) //NotFound : 意思是找不到引用的外键数据时忽略，NotFound默认是exception
    private Set<User> userSet = new HashSet<User>();//拥有该角色的所有用户集合
}
